package com.sjx.sjxlibrary.log;

import static com.sjx.sjxlibrary.log.HiLogConfig.MAX_LEN;

import android.util.Log;

import androidx.annotation.NonNull;

/**
 * Created by sjx on 2022/7/16
 * 控制台日志打印器
 */
public class HiConsolePrinter implements HiLogPrinter {
    @Override
    public void print(@NonNull HiLogConfig config, int level, String tag, @NonNull String printString) {
        /* 要打印字符串的长度 */
        int len = printString.length();
        /* 要打印字符串的长度除以设定的每行最大字符长度 */
        int countOfSub = len / MAX_LEN; // 注意这里右边运算的len、MAX_LEN都是int型，所以算出来的结果也是int，所以结果为0，赋值给左侧变量countOfSub也就是0
        if (countOfSub > 0) {
            /* 有多行，则需要根据最大长度处理 */
            StringBuilder builder = new StringBuilder();
            int index = 0;
            for (int i = 0; i < countOfSub; i++) {
                builder.append(printString.substring(index, index + MAX_LEN));
                index += MAX_LEN;
            }
            if (index != len) {
                builder.append(printString.substring(index, len));
            }
            Log.println(level, tag, builder.toString());
        } else {
            /* 一行可以打印完，直接打印 */
            Log.println(level, tag, printString);
        }
    }
}
